The transmission control protocol (TCP) enables two network devices to establish a connection over a network and to exchange streams of data over the connection in the form of packets. TCP guarantees delivery of data and also guarantees that packets will be delivered in the same order in which they were sent.
TCP employs congestion control algorithms that help defuse network congestion by aggressively throttling the rate at which packets are being transmitted (i.e., sent) from the source. On high bandwidth-delay networks, these aggressive measures result in TCP substantially underutilizing network bandwidth in the presence of even a small percentage of packet loss. For example, some of the Windows® family of operating systems employ a form of TCP that implements the widespread NewReno congestion control algorithm, which performs poorly in high bandwidth-delay environments.
The network research community has proposed several enhancements and modifications to TCP's congestion control algorithm in an attempt to improve its performance in high-speed networks. There are several factors to consider and there is no “one size fits all” solution. The more aggressive the algorithm, the more unfair it is to other TCP flows. Further, because there is no universally accepted standard, the decision on which congestion control algorithm to implement for a given operating system is rather difficult.